package com.casa_apoio.controller;

import com.casa_apoio.model.dao.FuncionarioDAO;
import com.casa_apoio.model.entity.Funcionario;
import com.casa_apoio.util.FacesContextUtil;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@RequestScoped
public class MbFuncionario implements Serializable {

    private Funcionario funcionario;
    private List<Funcionario> funcionarios;
    private String pesquisa;
    private Integer codigoFuncionario;

    public FuncionarioDAO funcioarioDAO() {
        FuncionarioDAO<Funcionario> funcioarioDAO = new FuncionarioDAO<Funcionario>(Funcionario.class, FacesContextUtil.getRequestSession());
        return funcioarioDAO;
    }

    public void pesquisarFuncionario() {
        funcionarios = null;
        if (!pesquisa.isEmpty()) {
            funcionarios = funcioarioDAO().pesquisarFucionario(pesquisa);
        } else {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Para realizar a pesquisa o campo não pode ser vazio!", "Erro"));
        }
    }

    public String salvarFuncionario() {
        if (funcionario.getIdFuncionario() == null || funcionario.getIdFuncionario() < 1) {
            funcioarioDAO().salvar(funcionario);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Gravação efetuada com sucesso!", ""));
        } else {
            funcioarioDAO().atualizar(funcionario);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Alteração efetuada com sucesso!", ""));
        }
        limparFuncionario();
        return null;
    }

    public String alterarFuncionario(Integer codigo) {
        if (codigo != null) {
            funcionario = (Funcionario) funcioarioDAO().getEntity(codigo);
            if (funcionario == null) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Funcionario não encontrado, verifique o codigo!", ""));
                return null;
            }
        }
        return null;
    }

    public String limparFuncionario() {
        funcionario = new Funcionario();
        return null;
    }

    public Funcionario getFuncionario() {
        if (funcionario == null) {
            funcionario = new Funcionario();
        }
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public List<Funcionario> getFuncionarios() {
        if (funcionarios == null) {
            funcionarios = funcioarioDAO().listarFuncionarios();
        }
        return funcionarios;
    }

    public void setFuncionarios(List<Funcionario> funcionarios) {
        this.funcionarios = funcionarios;
    }

    public String getPesquisa() {
        return pesquisa;
    }

    public void setPesquisa(String pesquisa) {
        this.pesquisa = pesquisa;
    }

    public Integer getCodigoFuncionario() {
        return codigoFuncionario;
    }

    public void setCodigoFuncionario(Integer codigoFuncionario) {
        this.codigoFuncionario = codigoFuncionario;
    }

}
